package ru.ncedu.java.vlku.hrs.bll;

import ru.ncedu.java.vlku.hrs.model.*;

import javax.management.BadAttributeValueExpException;
import java.util.List;

public interface HRSManager {
    public void createCustomerAccount( CustomerAccount ca ) throws BadAttributeValueExpException;
    public void updateCustomerAccount( CustomerAccount ca ) throws BadAttributeValueExpException;
    public CustomerAccount getCustomerAccountById( Long id );
    public List<CustomerAccount> getCustomerAccountsWithName( String name );
    public List<CustomerAccount> getAllCustomerAccounts();

    public void createShop( Shop shop );
    public void updateShop( Shop shop );
    public Shop getShopById( Long id );
    public List<Shop> getShopsWithName( String name );
    public List<Shop> getAllShops();

    public void createStorage( Storage storage );
    public void updateStorage( Storage storage );
    public Storage getStorageById( Long id );
    public List<Storage> getStoragesWithName( String name );
    public List<Storage> getAllStorages();

    public void createBill( Bill bill );
    public void updateBill( Bill bill );
    public Bill getBillById( Long id );
    public List<Bill> getAllBills();

    public void createTariff( Tariff tariff );
    public void updateTariff( Tariff tariff );
    public Tariff getTariffById( Long id );
    public List<Tariff> getAllTariffs();

    public void createCargo( Cargo cargo );
    public void updateCargo( Cargo cargo );
    public Cargo getCargoById( Long id );
    public List<Cargo> getCargosWithName( String name );
    public List<Cargo> getAllCargos();

    public void createPrice( Price price );
    public void updatePrice( Price price );
    public Price getPriceById( Long id );
    public List<Price> getAllPrices();
    
    public void createBillCargo( BillCargo bc );
    public void updateBillCargo( BillCargo bc );
    public BillCargo getBillCargoById( Long id );
    public List<BillCargo> getAllBillCargos();

    public void createShopCargoAvailability( ShopCargoAvailability sca );
    public void updateShopCargoAvailability( ShopCargoAvailability sca );
    public ShopCargoAvailability getShopCargoAvailabilityById( Long id );
    public List<ShopCargoAvailability> getAllShopCargoAvailabilities();

    public void createStorCargoAvailability( StorCargoAvailability sca );
    public void updateStorCargoAvailability( StorCargoAvailability sca );
    public StorCargoAvailability getStorCargoAvailabilityById( Long id );
    public List<StorCargoAvailability> getAllStorCargoAvailabilities();
}
